#include "gtkwidgetprivate.h"
#include "gtkaccelgroupprivate.h"
-#include "gtkaccessible.h"
+#include "gtkaccessibleprivate.h"
#include "gtkactionobserverprivate.h"
#include "gtkapplicationprivate.h"
#include "gtkbuildable.h"
g_object_unref (shortcut);
}
}
+
+ priv->accessible_role = GTK_ACCESSIBLE_ROLE_WIDGET;
}
static void
gtk_layout_manager_set_widget (priv->layout_manager, NULL);
g_clear_object (&priv->layout_manager);
+ g_clear_object (&priv->at_context);
+
priv->visible = FALSE;
if (_gtk_widget_get_realized (widget))
gtk_widget_unrealize (widget);
/*
* GtkAccessible implementation
*/
+
+static GtkATContext *
+gtk_widget_accessible_get_at_context (GtkAccessible *accessible)
+{
+ GtkWidget *self = GTK_WIDGET (accessible);
+ GtkWidgetPrivate *priv = gtk_widget_get_instance_private (self);
+
+ if (priv->at_context == NULL)
+ {
+ GtkWidgetClass *widget_class = GTK_WIDGET_GET_CLASS (self);
+ GtkWidgetClassPrivate *class_priv = widget_class->priv;
+
+ priv->at_context =
+ gtk_at_context_create (class_priv->accessible_role, accessible);
+ }
+
+ return priv->at_context;
+}
+
static void
gtk_widget_accessible_interface_init (GtkAccessibleInterface *iface)
{
+ iface->get_at_context = gtk_widget_accessible_get_at_context;
}
/*
gtk_widget_remove_css_class (widget, GTK_STYLE_CLASS_HORIZONTAL);
}
}
+
+/**
+ * gtk_widget_class_set_accessible_role:
+ * @widget_class: a #GtkWidgetClass
+ * @accessible_role: the #GtkAccessibleRole used by the @widget_class
+ *
+ * Sets the accessible role used by the given #GtkWidget class.
+ *
+ * Different accessible roles have different states, and are rendered
+ * differently by assistive technologies.
+ */
+void
+gtk_widget_class_set_accessible_role (GtkWidgetClass *widget_class,
+ GtkAccessibleRole accessible_role)
+{
+ GtkWidgetClassPrivate *priv;
+
+ g_return_if_fail (GTK_IS_WIDGET_CLASS (widget_class));
+
+ priv = widget_class->priv;
+ priv->accessible_role = accessible_role;
+}
#include "gtkwidget.h"
#include "gtkactionmuxerprivate.h"
+#include "gtkatcontextprivate.h"
#include "gtkcsstypesprivate.h"
#include "gtkeventcontrollerprivate.h"
#include "gtklistlistmodelprivate.h"
/* Tooltip */
char *tooltip_markup;
char *tooltip_text;
+
+ /* Accessible context */
+ GtkATContext *at_context;
};
typedef struct
GQuark css_name;
GType layout_manager_type;
GtkWidgetAction *actions;
+ GtkAccessibleRole accessible_role;
};
void gtk_widget_root (GtkWidget *widget);